package com.shop.cereshop.app.tencent.im.model.transfer;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @description: 转账订单信息VO
 * @author zdd
 * @date 2025/9/3 14:30
 * @version 1.0
 */
@ApiModel("转账订单信息VO")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TransferOrderVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("转账订单ID")
    private String transferId;

    @ApiModelProperty("单号")
    private String orderId;

    @ApiModelProperty("交易类型：8-转账付款 9-领取转账收款 10-转账退款")
    private  Integer transactionType;

    @ApiModelProperty("发送者ID")
    private String senderId;

    @ApiModelProperty("发送者名称")
    private String senderName;

    @ApiModelProperty("群组ID (如果是单聊则为空)")
    private String groupId;

    @ApiModelProperty("接收者ID")
    private String receiverId;

    @ApiModelProperty("接收者名称")
    private String receiverName;

    @ApiModelProperty(value="转账金额（单位：元）")
    private BigDecimal amount;

    @ApiModelProperty(value="手续费（微信转账通常为0）")
    private BigDecimal fee;

    @ApiModelProperty(value="实际支付金额（单位：元）")
    private BigDecimal actualAmount;

    @ApiModelProperty(value="用户填写的转账备注")
    private String remark;

    @ApiModelProperty(value="订单状态: 3-未领取, 4-已领取, 5-已过期, 6-已退款")
    private Integer status;

    @ApiModelProperty(value="订单创建时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    @ApiModelProperty(value="发送时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime sendTime;

    @ApiModelProperty(value="支付完成时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime payTime;

    @ApiModelProperty(value="过期时间（仅在待领取状态时有值）")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime expireTime;

    @ApiModelProperty(value="领取时间（领取后填充）")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime receiveTime;

    @ApiModelProperty(value="退款时间（过期或主动退款后填充）")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime refundTime;

    @ApiModelProperty(value="退款类型 (1:过期自动退款  2:用户主动退款)")
    private Integer refundType;

    @ApiModelProperty(value="最终完成时间（领取/过期/退款）")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime completedTime;

}
